import { Message } from 'element-ui'
import { webSocketPath } from '@/utils/allUrl.js'
// const path = 'ws://192.168.1.238:8092/websocket/' // 周长健
// const path = 'wss://cmmop.hnlot.com.cn/websocket/' // 域名
// const path = 'ws://192.168.1.45:8092/websocket/' // 线上地址
// const path = 'ws://www.hnlot.com.cn:8092/websocket/' // 域名
const username = localStorage.getItem('userName')
const tipArr = [
  '非法命令',
  '没有定义的ID',
  'ID中有非法字符',
  '权限不够',
  '失败',
  '成功',
  '帧长度错误',
  '数据长度错误',
  '数据长度为零',
  '非法数据',
  '数据溢出',
  '没有数据',
  '数据格式错误',
  '数据准备中',
  'ID只读',
  '块类型失败',
  '类型错误',
  '不支持'
]
const overTimeTips = '响应超时，稍后再试！'
const intervalTime = 15000 // 响应超时时间
const notChanges = '未检测到修改数据,请修改之后再提交！'
export { username, tipArr, overTimeTips, intervalTime, notChanges }
// // 主机回复
// const host_status_tips = [
//   { id: '0000', tips: '主机回复' },
//   { id: '0001', tips: '主机正忙' },
//   { id: '0002', tips: '主机网络不可用' },
//   { id: '0003', tips: '集装箱超载 不能超过20个list' },
//   { id: '0004', tips: '集装箱消息处理超时' },
//   { id: '0005', tips: 'tcp代理服务器不可用' },
//   { id: '0006', tips: 'mqtt代理服务器不可用' },
//   { id: '0007', tips: '请填写正确的IP' },
//   { id: '0008', tips: '请填写正确的设备序列号' },
//   { id: '0009', tips: '请填写正确的辖区' },
//   { id: '0010', tips: '程序web转发到tcp或mqtt出错 错误有多种类型 比如说mqtt或者tcp转发程序不在线' },
//   { id: '0011', tips: '别的客户端正在使用' },
//   { id: '0012', tips: '正在写入' },
//   { id: '0013', tips: '排队执行的指令超过6个了' }
// ]

// // 整包提示
// export function errorTips(host_status) {
//   host_status_tips.forEach(item => {
//     if (host_status === item.id) {
//       Message.error({ message: item.tips })
//     }
//   })
// }
// 整包提示
export function errorTips(host_status, tips) {
  // if (host_status === '0011') {
  //   // const tipsR = tips.reverse()
  //   const tipsR = tips
  //   const userName = tipsR.slice(16)
  //   const tipsName = userName.reverse() + '正在使用'
  //   Message.error({ message: tipsName })
  // } else {
  //   Message.error({ message: tips })
  // }
  Message.error({ message: tips })
}
// // list_status错误提示
// const list_status_tips = [
//   { id: '0000', tips: ' 待处理状态' },
//   { id: '0001', tips: ' 读获取的缓存' },
//   { id: '0002', tips: ' tcp程序构造主机指令时错误' },
//   { id: '0003', tips: ' tcp程序解析主机回复指令错误' },
//   { id: '0004', tips: 'tcp程序错误' },
//   { id: '0006', tips: '不存在的ID' },
//   { id: '2000', tips: ' 正常数据' }
// ]
// // 列表数据状态
// export function listTips(list_status) {
//   let text = ''
//   list_status_tips.forEach(item => {
//     if (item.id === list_status) {
//       text = item.tips
//     }
//   })
//   return text
// }
// 列表数据状态
export function listTips(remarks) {
  return remarks
}
// 主机连接地址
export function newSocket(userName, uuid) {
  // return webSocketPath + userName + uuid
  return webSocketPath + userName
}
// 截取对象中key的id
export function getFor(obj, list) {
  for (const k in obj) {
    list.push({
      command_id: k.replace('R_', ''),
      value: ''
    })
  }
}
// 判断是否是json字符串
export function isJSON(str) {
  if (typeof str === 'string') {
    try {
      var obj = JSON.parse(str)
      if (typeof obj === 'object' && obj) {
        return true
      } else {
        return false
      }
    } catch (e) {
      return false
    }
  }
}
// 数组去重
export function unique(arr) {
  var newArr = []
  for (var i = 0; i < arr.length; i++) {
    if (newArr.indexOf(arr[i]) === -1) {
      newArr.push(arr[i])
    }
  }
  return newArr
}
// 获取uuid
export function getUUID(len, radix) {
  var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
  var uuid = []
  var i
  radix = radix || chars.length
  if (len) {
    for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)]
  } else {
    var r
    uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
    uuid[14] = '4'
    for (i = 0; i < 36; i++) {
      if (!uuid[i]) {
        r = 0 | (Math.random() * 16)
        uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r]
      }
    }
  }
  return uuid.join('')
}
// 判断是否是数字
export function IsNaN(value) {
  return typeof value === 'number' && !isNaN(value)
}
export function isNumber(val) {
  // 判断是不是数值型
  // isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除，
  if (val === '' || val == null) {
    return false
  }
  if (!isNaN(val)) {
    // 对于空数组和只有一个数值成员的数组或全是数字组成的字符串，isNaN返回false，例如：'123'、[]、[2]、['123'],isNaN返回false,   //所以如果不需要val包含这些特殊情况，则这个判断改写为if(!isNaN(val) && typeof val === 'number' )
    return true
  } else {
    return false
  }
}
// socket send数据
export function send(_this, doing, list) {
  const SN = localStorage.getItem('SN')
  const params = {
    // user: _this.username + _this.UUID,
    user: _this.username,
    // user: getUrl('X-Cmmop-User-Token'),
    sn: SN, // 序列号
    doing: doing, // 要做的事情 01读 02写
    host_status: '0000', // 主机状态
    list: list // 传输id-value
  }
  console.log('---发送数据---：', params)
  if (_this.socket.readyState === 1) {
    _this.socket.send(JSON.stringify(params))
  }
}
// 心跳
export function sendPing(_this, time = 5000, heartCheck = 'heartCheck') {
  clearInterval(_this.setIntervalWesocketPush)
  // console.log('------', _this.username)
  _this.socket.send(heartCheck + '>-<' + _this.username)
  _this.setIntervalWesocketPush = setInterval(() => {
    _this.socket.send(heartCheck + '>-<' + _this.username)
  }, time)
}
